/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package principal;

/**
 *
 * @author Fabricio
 */
import java.io.*;
import java.io.InputStreamReader;

public class ArbolAplicacion {

       Arbol miArbol;
       BufferedReader entrada;


      public ArbolAplicacion(){
             miArbol = new Arbol();
             entrada = new BufferedReader(new InputStreamReader(System.in));
       }


       public void generar()throws Exception{
           // Nodo p = miArbol.getRaiz();
           char op='s';
           while(op !='n' && op!='N'){

           System.out.println(" Ingrese elemento");

           Object elem = entrada.readLine();
           Nodo x = new Nodo(elem);

           miArbol.insertar(miArbol.getRaiz(), miArbol.getRaiz(), x);

           System.out.println(" Continuar enter/ n");
           String opcion=entrada.readLine();
           opcion=opcion.equals("")?"a":opcion;
            op = opcion.charAt(0);

        }
     }

       public void eliminarNodo()throws Exception{
            // Nodo p = miArbol.getRaiz();
            char op='s';
            while(op !='n' && op!='N'){

            System.out.println(" Ingrese elemento");

            Object elem = entrada.readLine();
            Nodo x=new Nodo(elem);
            // Buscar
           buscarEnElArbol(miArbol.getRaiz(), miArbol.getRaiz(), x);



           System.out.println(" Continuar enter/ n");
           String opcion=entrada.readLine();
           opcion=opcion.equals("")?"a":opcion;
            op = opcion.charAt(0);

          }
        }

public void buscarEnElArbol(Nodo ant, Nodo p, Nodo x){
   if(p!=null){
if(Integer.parseInt(x.getDato().toString())==Integer.parseInt(p.getDato().toString())){
miArbol.eliminar(ant, p);
}else{
if(Integer.parseInt(x.getDato().toString())>Integer.parseInt(p.getDato().toString())){
buscarEnElArbol(p,p.getPd(),x);
}else{
buscarEnElArbol(p,p.getPi(),x);
}
}
}

}

public void imprimirArbol(){
System.out.println("=====================");
System.out.println("Elementos del arbol");
miArbol.imprimir(miArbol.getRaiz()) ;
System.out.println("");
System.out.println("=====================");}

public void mostrarOpciones(){
System.out.println("=================");
System.out.println(" Opciones de Arbol");
System.out.println("1- Generar");
System.out.println("2- Eliminar");
System.out.println("3- Imprimir");
System.out.println("Ingrese su opciones:"); }

public void menu()throws Exception{
int op = 9;
do{
switch (op) {

case 1: generar(); break;
case 2: eliminarNodo(); break;
case 3: imprimirArbol(); break;}
mostrarOpciones();
String opc = entrada.readLine();
opc = opc.equals("")?"9":opc;
op=Integer.parseInt(opc);
}while(op!=0);
}

public static void main(String[] args)throws Exception {
ArbolAplicacion mi=new ArbolAplicacion();
mi.menu();
}}



